home *** CD-ROM | disk | FTP | other *** search
- /*
- * For legal stuff see the file COPYRIGHT
- */
- #import <objc/List.h>
-
- @interface SortList : List
- {
- id delegate ; // an object that knows how to compare elements
- SEL sortMethod; // method used to sort
- SEL compareMethod; // method used to compare to key values
- SEL valueMethod; // method for getting key value
- id compObject; // object which will do actual comparison
- SEL compMethod; // method which will be used to do comparison
- BOOL sorted; // whether the list is sorted
- BOOL autoSort; // whether the list sorts itself automatically
- }
-
- // overridden methods
- - initCount:(unsigned int)numSlots;
- - (unsigned int)indexOf:anObject;
- - addObject:anObject;
- - addObjectIfAbsent:anObject;
- - insertObject:anObject at:(unsigned int)index;
- - replaceObject:anObject with:newObject;
- - replaceObjectAt:(unsigned int)index with:newObject;
-
- - update;
- - (BOOL)isSorted;
- - setAutoSort:(BOOL)sortFlag;
- - (BOOL)doesAutoSort;
-
- - setDelegate:obj;
- - delegate;
- - useSortMethod:(SEL)method;
- - (SEL)sortMethod;
- - useComparisonMethod:(SEL)method;
- - (SEL)comparisonMethod;
- - useValueMethod:(SEL)method;
- - (SEL)valueMethod;
-
- - sort;
- - insertObject:anObject;
- - mergeList:otherList;
- - (unsigned int)indexOfObjectWithKey:proxyObject;
-
- - shellsort;
- - (int)compare:object1 :object2;
-
- @end
-
- @interface SortingListDelegate
- /*
- * Delegated comparitor method. Delegate must compare the two objects
- * and return a number < 0 if object1 < object2, 0 if object1 = object2, and a
- * number greater than 0 if object1 > object2 in whatever way makes sense to
- * the application. The delegate can use the valueMethods already set or
- * ignore them and use its own.
- */
- - (int)compare:object1 :object2;
-
- /*
- * Delegated sort method (optional). Delegate may implement its own sorting
- * routine (though it kinda defeats the whole purpose of this object). The
- * SortList will send itself as the argument. Note that the delegate can
- * access the comparisonMethods and valueMethods already assigned or can
- * ignore them and use its own.
- */
- - sort:aList;
- @end
-